Serializacion JSON

Descripcion

Como Serializar-Deserializar un objeto usando JSON.

Ejemplo Código

Metodo

Primero tenemos que añadir el paquete de Newtonsoft.Json desde nuget:

A continuación importamos el namespace de la librería:

using Newtonsoft.Json;

En este caso vamos a usar una lista de objetos para serializarla en un archivo

Clase Persona:

namespace FileExample
{
    public class Persona
    {
        public string nombre;
        public int edad;
    }
}

NOTA: Solo se serializarán los campos del objeto que sean públicos.

Definimos nuestros objetos:

List<Persona> lista = new List<Persona>()
{
    new Persona()
    {
        nombre = "Pepe",
        edad = 45
    },
    new Persona()
    {
        nombre = "Mercedes",
        edad = 56
    }
};

Serializar

Para serializar declaramos una clase JsonSerializer y usamos el método Serialize pasándole el steam en el que escribiremos y los datos que queremos serializar:

using (StreamWriter escritor = File.CreateText(archivo))
{
    JsonSerializer serializador = new JsonSerializer();

    serializador.Serialize(escritor, lista);
}

Deserializar

Para deserializar usamod el método estático DeserializeObject la clase JsonConvert

string data = File.ReadAllText(archivo);

List<Persona> nuevaLista = JsonConvert.DeserializeObject<List<Persona>>(data);

Console.WriteLine(nuevaLista[1].nombre);

Código Completo:

using static System.IO.Directory;
using static System.IO.Path;
using static System.Environment;
using Newtonsoft.Json;
using FileExample;

string dir = Combine(GetFolderPath(SpecialFolder.UserProfile), "PruebaArchivo");
CreateDirectory(dir);

string archivo = Combine(dir, "persona.json");

Persona persona = new Persona();

List<Persona> lista = new List<Persona>()
{
    new Persona()
    {
        nombre = "Pepe",
        edad = 45
    },
    new Persona()
    {
        nombre = "Mercedes",
        edad = 56
    }
};

/**** SERIALIZAR *****/

using (StreamWriter escritor = File.CreateText(archivo))
{
    JsonSerializer serializador = new JsonSerializer();

    serializador.Serialize(escritor, lista);
}


/**** DESERIALIZAR *****/

string data = File.ReadAllText(archivo);

List<Persona> nuevaLista = JsonConvert.DeserializeObject<List<Persona>>(data);

Console.WriteLine(nuevaLista[1].nombre);
Tags

C# | Serializar | JSON